======================
Reconcile Error Sample
======================

Overview
--------
        This demo provides an example of the uses of the ReconcileError feature
        of Borland Data Provider.  The demo simulates two users connected to
        the same Interbase tables (CUSTOMER/SALES from the Interbase Samples).
        Each user has two BdpDataAdapters, one connecting to the CUSTOMER table
        and one connecting to the SALES table.  Each of the adapters is hooked
        to a single OnUpateError event, with the following code:

        private void DataAdapter_OnUpdateError(object sender,
                                Borland.Data.Common.BdpUpdateErrorEventArgs e)
        {
           Borland.Data.Provider.ReconcileErrorForm f = new
                                Borland.Data.Provider.ReconcileErrorForm(e);
           f.ShowDialog();
        }

        Each of the Users in the application is provided with an "Apply" button
        with the following code:

                UsersDataAdapter.AutoUpdate( <TableName>,
                                        Borland.Data.Common.BdpUpdateMode.All);

        Using BdpUpdateMode.All, an error will occur if any of the values in
        the row updated have been changed by another user.

Setup
-----
        Before working with this sample it will be necessary to set the two
        BdpConnection controls to a valid Interbase connection pointing to the
        standard Interbase employee.gdb, which contains the tables CUSTOMER and
        SALES.  Both BdpConnections should be connected to the same Interbase
        database.

Running the Application
-----------------------

        To invoke an error, run the application and then change any row value
        for one of the users, and hit the "Apply" button.  Then change a value
        in the same row of the second user, and hit "Apply".

        When the error dialog appears, you have a number of options, both
        in terms of how you want to handle the error, and what data you want
        to retain.

        In terms of how you want to handle the error, you can elect to
        retry using the primary key, to ignore the offending row and continue
        on to the next row that contains a change, or abord the update process
        completely.

        In terms of the data to be used, you can elect to use the server data,
        the original data (before it was changed), or the current data.  The
        current data can be changed in the datagrid on the ReoncileError form.

        If you elect to force the update using the primary key, you can verify
        that this has worked by hitting the "Refresh" button for the second
        user.  



